Systems and Methods for Quantile Estimation in a Distributed Data System

ABSTRACT

In accordance with the teachings described herein, systems and methods are provided for estimating quantiles for data stored in a distributed system. In one embodiment, an instruction is received to estimate a specified quantile for a variate in a set of data stored at a plurality of nodes in the distributed system. A plurality of data bins for the variate are defined that are each associated with a different range of data values in the set of data. Lower and upper quantile bounds for each of the plurality of data bins are determined based on the total number of data values that fall within each of the plurality of data bins. The specified quantile is estimated based on an identified one of the plurality of data bins that includes the specified quantile based on the lower and upper quantile bounds.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.13/482,095 filed May 29, 2012, which is incorporated by reference in itsentirety.

FIELD

The technology described in this patent document relates generally tocomputer-implemented systems and methods for estimating quantiles fordata stored in a distributed system.

BACKGROUND

Quantiles are commonly used for various applications involving frequencydata. Finding quantiles of a variate in small data sets is a relativelysimple matter. As the number of observed values in the data setincreases, however, the quantile problem becomes more difficult. Furthercomplicating the problem is that large data sets are often stored indistributed systems in which different components (e.g., nodes) of thesystem have access to different portions of the data.

SUMMARY

In accordance with the teachings described herein, systems and methodsare provided for estimating quantiles for data stored in a distributedsystem. In one embodiment, an instruction is received to estimate aspecified quantile for a variate in a set of data stored at a pluralityof nodes in the distributed system. A minimum data value and a maximumdata value for the variate are identified from the set of data. Aplurality of data bins for the variate is defined, wherein the pluralityof data bins collectively range from the minimum data value to themaximum data value and each of the plurality of data bins is associatedwith a different range of data values in the set of data. A total numberof data values in the set of data that fall within each of the pluralityof data bins is determined. Lower and upper quantile bounds for each ofthe plurality of data bins are determined based on the total number ofdata values that fall within each of the plurality of data bins. One ofthe plurality of data bins is identified that includes the specifiedquantile based on the lower and upper quantile bounds. The specifiedquantile is estimated based on the identified one of the plurality ofdata bins.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of an example system for estimating quantilesfor data stored in a distributed system.

FIG. 2 is a block diagram of another example system 200 for estimatingquantiles for data stored in a distributed system 200 in which data isstored in a plurality of separate files at different nodes 204, 206 inthe distributed system.

FIG. 3 is a block diagram of another example system 300 for estimatingquantiles for data stored in a distributed system 300.

FIGS. 4-8E depict examples of how quantiles may be estimated using thesystems and methods described herein.

FIG. 9 depicts an example of a distributed system that may be used forestimating quantiles.

DETAILED DESCRIPTION

FIG. 1 is a block diagram of an example system 100 for estimatingquantiles for data stored in a distributed system. The system 100includes a quantile estimation engine 102 that executes in a distributedsystem in which data is stored in a plurality of separate files atdifferent nodes 104, 106 in the distributed system. As used herein, adistributed system consists of a plurality of separate computers and/ordatabases that are connected together through a network, and a node inthe distributed system may include any one of the computers or databasesin the distributed system. Typically, the nodes of a distributed systemare connected using middleware such that the entire distributed systemappears to a user as a single, integrated computing system. In theexample illustrated in FIG. 1, the data of interest is stored in filesat two separate nodes 104, 106 of the distributed system. The quantileestimation engine 102 may, for example, be a software application thatis executed by a processor located either at nodes 104 or 106 or at aseparate node in the distributed system. It should be understood thatalthough two nodes are shown in the examples illustrated in FIGS. 1-3, adistributed system may include data stored in files located in more thantwo nodes.

In operation, the quantile estimation engine 102 receives an instruction108 that identifies a quantile to be estimated for a variate in a set ofdata stored in a plurality of files at separate nodes 104, 106 in thedistributed system. The quantile estimation instruction 108 may, forexample, be received from user input or from another software module inthe system.

Upon receiving the quantile estimation instruction 108, the system 100executes the processes depicted at 110-116 in FIG. 1 in order togenerate the quantile estimate 118 for the set of data. It should beunderstood that the steps of the method depicted in FIG. 1 may beperformed entirely by the quantile estimation engine 102 or,alternatively, the quantile estimation engine 102 may cause one or moresteps or portions of one or more steps to be performed by other nodes104, 106 of the distributed system.

At 110, the system 100 performs a single pass through the set of data todetermine the minimum and maximum values for the variate. At 111, thequantile estimation engine 102 defines a plurality of data bins for thevariate. The data bins for a variate collectively range from the minimumdata value to the maximum data value for the variate in the set of data,with each data bin being associated with a different range of datavalues in the set of data.

At 112, the system 100 performs another pass through the set of data todetermine a count of the total number of data values for the variatethat fall within each of the plurality of data bins. From the bincounts, the quantile estimation engine 102 determines, at 113, the upperand lower bounds on the percentages for each of the plurality of databins. At 114, the quantile estimation engine 102 determines if one ofthe plurality of data bins has converged on the quantile specified inthe quantile estimation instruction 108. For example, the quantileestimation engine 102 may be configured to estimate the quantile 118 toa predetermined level of precision. The level of precision may, forexample, be based on the absolute error bound for quantiles in the bin.For instance, if the specified quantile is between the upper and lowerquantile bounds for a bin and the absolute error (e.g., calculated ashalf the distance between the upper and lower bounds) is within thepredetermined precision level, then the quantile estimation engine 102may estimate the quantile 118 from the data values within the bin. Forexample, the quantile estimate 118 may be selected from a data value atthe midpoint of the bin or as a weighted average of the data values inthe bin.

If one of the plurality of data bins has not converged on the specifiedquantile, then, at 115, the quantile estimation engine 102 isolates oneof the plurality of bins that includes the specified quantile. Themethod then returns to 111, where the quantile estimation engine 102defines a new set of data bins that collectively range from the lower toupper quantile bounds of the isolated bin. The method then repeats steps112 and 113 to make another pass through the data set with the redefineddata bins. This process is repeated until a data bin converges on thespecified quantile (possibly within a predetermined precision level), atwhich point the quantile estimate 118 is provided and the quantileestimation method ends at 116.

FIG. 2 is a block diagram of another example system 200 for estimatingquantiles for data stored in a distributed system 200 in which data isstored in a plurality of separate files at different nodes 204, 206 inthe distributed system. In this example, instructions 208 received bythe quantile estimation engine 202 may specify a single quantile forestimation or may specify multiple quantiles (e.g., a vector ofquantiles) for estimation. As explained below, if multiple quantiles fora set of data are specified for estimation, then the quantile estimationengine 202 may simultaneously determine quantile estimates for each ofthe multiple quantiles. In addition, the quantile estimate engine 202may be configured to simultaneously estimate quantiles for multiplevariates and data sets. The quantile estimation instructions 208 maytherefore identify multiple variates and multiple data sets for quantileestimation.

Upon receiving the quantile estimation instruction(s) 208, the system200 executes the processes depicted at 210-218 in FIG. 2 in order togenerate the quantile estimate(s) 220. In this example 200, a dottedline 222 is included to illustrate processes that may be performed bythe quantile estimation engine 202 and processes that may be performedat the distributed nodes 204, 206. Specifically, in the illustratedexample, the processes depicted to the left of the dotted line 222 areperformed by the distributed nodes 204, 206 and the processes depictedto the right of the dotted line 222 are performed by the quantileestimation engine 202.

At steps 210 and 211, the system 200 performs a single pass through theset(s) of data to determine the minimum and maximum values for eachvariate. At 210, each node 204, 206 that holds portions of the data forthe identified variate(s) determines the maximum and minimum values ofthe variate(s) for its data and sends this information back to thequantile estimation engine 202. At 211, the quantile estimation engine202 combines the data counts and minimum and maximum values from thedistributed nodes 204, 206 to determine the counts, minimum and maximumvalues for the entire set(s) of data.

At 212, the quantile estimation engine 202 defines a plurality of databins for each variate. The data bins for a variate collectively rangefrom the minimum data value to the maximum data value for the set ofdata, with each data bin being associated with a different range of datavalues in the set of data. If the quantile estimation instructions 208identify multiple variates and/or data sets, then a different pluralityof data bins are defined for each variate and data set. In addition, ifmultiple quantiles are included in the quantile estimation instructions,then a different plurality of data bins may be defined for eachquantile.

At steps 213 and 214, the system 200 performs another pass through theset(s) of data to determine the number of data values that fall withineach of the plurality of data bins for each variate. At 213, each node204, 206 performs frequency counts of the variate for its data andprojects the frequency counts into each bin. If the quantile estimationinstructions 208 identify multiple variates and/or data sets, then thenodes 204, 206 may perform frequency counts and obtain maximum andminimum values for each variate and/or data set during the same datapass. The nodes 204, 206 send the bin counts and minimum and maximumvalues to the quantile estimation engine 202 which, at 214, combines thebin counts from each of the nodes 204, 206 to determine the total bincounts for each variate. In addition, in this example, each node 204,206 also identifies, at step 213, the minimum and maximum data valueswithin each of the plurality of data bins for each variate and returnsthese minimum/maximum values to the quantile estimation engine 202,which combines the minima and maxima from each node 204, 206 at step214. In this way, the combined minimum and maximum values for each binmay be used by the quantile estimation engine 202 to help identify thelocation of the desired quantile and potentially speed up theconvergence process.

At 215, the quantile estimation engine 202 determines the upper andlower bounds on the percentages for each of the plurality of data binsbased on the bin counts. The quantile estimation engine 202 may thendetermine, at 216, if one of the plurality of data bins has converged,to a predetermined precision level, on the quantile(s) specified in thequantile estimation instruction 208. As illustrated, the precision levelnecessary for convergence may, for example, be included in the quantileestimation instruction 208. If one of the plurality of data bins has notconverged on the specified quantile(s), then, at 217, the quantileestimation engine 202 isolates one of the plurality of bins thatincludes the specified quantile(s), and returns to step 212 to define anew set of data bins that include the data values from the isolated bin.This process is repeated until a data bin converges on the specifiedquantile(s), at which point a quantile estimate 220 is determined fromthe data values in the bin, and the method ends at 218.

FIG. 3 is a block diagram of another example system 300 for estimatingquantiles for data stored in a distributed system 300. In this example,the instructions 302 received by the quantile estimation engine 304 mayalso include one or more constraints to limit the data values includedin the quantile estimation. For instance, the constraint(s) may limitthe quantile estimation to one or more subcategories of data for theidentified variate(s). As an example, the constraint(s) could limit thequantile estimation to data values for a variate from a certaingeographic region, during a certain time period, or based on some othercriteria. In addition, the example illustrated in FIG. 3 may establishnon-uniform data bins, for instance to help speed up the convergenceprocess.

In operation, the system 300 depicted in FIG. 3 executes the processesdepicted at steps 310-319 upon receiving the quantile estimationinstruction(s) 302. Again in this example 300, a dotted line 332 isincluded to illustrate processes that may be performed by the quantileestimation engine 304 (depicted to the right of the dotted line) andprocesses that may be performed at the distributed nodes 306, 308(depicted to the left of the dotted line).

At steps 310 and 311, the system 300 performs a single pass through theset(s) of data to determine the minimum and maximum values for eachvariate, subject to any constraints identified in the quantileestimation instructions 302. Specifically, at 310, each node 306, 308that holds portions of the data for the identified variate(s) determinesthe maximum and minimum values of the variate(s) for its data, subjectto any constraints, and sends this information back to the quantileestimation engine 304. For example, if the quantile estimationinstruction 302 includes a constraint that identifies a particulargeographic region, then each node 306, 308 determines the minimum andmaximum values of the variate(s) within its data that are associatedwith the identified geographic region. At 311, the quantile estimationengine 304 combines the data counts from the distributed nodes 306, 308to determine the minimum and maximum values for the entire set(s) ofdata.

At 312, the quantile estimation engine 304 defines a grid size anddistribution for a plurality of data bins for each variate. A grid for aset of data bins, as used herein, is the set of points that define thebounds of the data bins. That is, a set of data bins for a variatecollectively include the data values between a minimum value and amaximum value. The set of points between the minimum and maximum valuesthat define the bounds of each bin are referred to as the grid, wherethe grid size refers to the number of points in the grid and the griddistribution refers to where each of the set of grid points are located.(See, e.g., the examples described below with reference to FIGS. 4-8E).A grid for a set of data bins may be uniform or non-uniform. Anon-uniform grid may, for example, be defined based on some known orcalculated information regarding the likely position of the desiredquantile within the data. For example, a non-uniform grid may be basedon information obtained from a previous data pass (e.g., while isolatinga data bin at 319.) In another example, a non-uniform data grid may beestablished by applying a known quantile algorithm, such as conformalmapping, and using the resultant data to include likely quantile valuesin the same bin. In another example, a non-uniform grid distribution maybe used to isolate one or more outlier data values. In the exampleillustrated in FIG. 3, one or more of these processes to define anon-uniform grid may be performed at process step 313. Once the grid isdefined, the data values are distributed into the plurality of bins at314.

At steps 315 and 316, the system 300 performs another pass through theset(s) of data to determine the number of data values that fall withineach of the plurality of data bins for each variate, along with theminimum and maximum data values within each bin. At 315, each node 306,308 performs frequency counts of the variate and projects the frequencycounts into each bin. Each node 306, 308 also determines the minimum andmaximum data values in each of the plurality of bins for each variate.The nodes 306, 308 then send the bin counts and the minimum and maximumvalues to the quantile estimation engine 304, which combines them at 316to determine total bin counts and minimum/maximum values for eachvariate

At 317, the quantile estimation engine 304 determines the upper andlower bounds on the percentages for each of the plurality of data binsbased on the bin counts. The quantile estimation engine 304 may thendetermine, at 318, if one of the plurality of data bins has converged(e.g., to a predetermined precision level) on the specified quantile(s).If one of the plurality of data bins has not converged on the specifiedquantile(s), then, at 319, the quantile estimation engine 304 isolatesone of the plurality of bins that includes the specified quantile(s),and returns to step 312 to define a new data grid that includes the datavalues from the isolated bin. This process is repeated until a data binconverges on the specified quantile(s), at which point a quantileestimate 330 is determined from the data values in the bin, and themethod ends at 320.

FIGS. 4-6C depict a first example of how a quantile may be estimatedusing the systems and methods described herein. FIG. 4 illustratesexample data values for a variate that are split between two nodes(server 1 and server 2) 402, 404 in a distributed system. In thisexample, each data value represents an observed value for the samevariate (the observations have been arranged in multiple columns forreadability.) In total, the example includes 100 observed data values,with 50 observations stored at each of the two nodes 402, 404. The goalof the illustrated example is to estimate the 75% quantile for theexample set of data shown in FIG. 4. The exact answer to this query is83.1.

FIG. 5A illustrates an example of data that may be obtained from a firstpass through the data shown in FIG. 4. As illustrated, the first node(server 1) determines that its stored data for the variate includes acount of 50 data values with a minimum data value of 1.1 and a maximumdata value of 98.4. The second node (server 2) in the illustratedexample determines that its stored data for the variate includes a countof 50 data values with a minimum data value of 7.2 and a maximum datavalue of 97.8. As shown, combined results may be determined (e.g., by acentralized node) from the data from the first and second nodes. In theillustrated example, the combined results include a total of 100 datavalues with a minimum value of 1.1 and a maximum value of 98.4.

FIG. 5B illustrates an example of how data bins may be defined based onthe minimum and maximum data values and how bin counts may be determinedfrom a second pass through the data shown in FIG. 4. In this example,the data bins are defined with a grid size of 3 and with a uniformdistribution. Equally spacing 3 points (rounded to 2 decimal places)between the minimum (1.1) and the maximum (98.4) data values, results ingrid points of 25.45, 49.76 and 74.07. This results in four data bins,as illustrated in column 502 in FIG. 5B. In a second pass through thedata, the distributed nodes (server 1 and server 2) perform a count ofthe number of data values and the minimum and maximum values in each binand return the results to the centralized node (e.g., the quantileestimation engine), as illustrated in columns 504 and 506. Thecentralized node then combines the results, as illustrated in column508, and determines the quantile bounds for each bin, as shown in column510. For instance, in the illustrated example, the upper quantile boundfor Bin 1 represents the 25% quantile [Bin 1 Count (25)/Total Count(100)], the upper quantile for Bin 2 represents the 48% quantile [Sum ofBin 1 and 2 Counts (25+23)/Total Count (100)], and so on. From thisinformation, the centralized node can determine that the desired 75%quantile must be included within Bin 4, which has a lower quantile boundrepresenting the 69% quantile and an upper bound representing the 100%quantile. If the data range within Bin 4 meets the desired level ofprecision, then a quantile estimate may be determine from theinformation shown in FIG. 5B. For example, the value at the mid-point ofBin 4 (74.07≦x≦98.4) may be selected, resulting in an estimated 75%quantile of 86.24. However, if greater precision is desired, then Bin 4may be further refined into a new set of data bins, as illustrated inFIG. 5C.

In FIG. 5C, the data from the isolated bin (Bin 4) is separated intofour new uniform bins (Bins 4.1-4.4), as shown in col. 512. In a thirdpass, the distributed nodes (server 1 and server 2) perform a count ofthe data values in each of the redefined bins and return the results tothe centralized node, as illustrated in columns 514 and 516. The countsare then combined, as shown in column 518, and the quantile bounds foreach bin are calculated, as shown in column 520. The centralized nodemay now isolate the desired 75% quantile to Bin 4.2, which has a lowerbound of 80.14 and an upper bound of 86.22. The actual quantile mayreside anywhere within Bin 4.2. The midpoint of the bin, 83.18, may beselected as the estimated 75% quantile, or further iterations could beperformed to refine the estimate. In this example, each added iterationwould reduce the error by a factor of at least ¼.

FIG. 6A-6C illustrate another example using the data from FIG. 4, butwith a non-uniform grid. Again, the goal of the example is to estimatethe 75% quantile for the data in FIG. 4. FIG. 6A illustrates the minimumand maximum data values obtained from a first pass through the data,which is the same as in the uniform grid example shown in FIG. 5A. Anon-uniform grid is then established, which for this example includesgrid points at 62.5%, 75% and 87.5% of the distance from the lower binvalue to the upper bin value. These grid points may, for example, havebeen selected to cluster the bins around where the desired 75% quantileshould be located if the distribution was uniform. The resultingnon-uniform bins (Bin1-Bin4) are illustrated in column 602 of FIG. 6B.

In a second pass through the data, the distributed nodes (server 1 andserver 2) perform a count of the number of data values and minimum andmaximum values in each bin and return the results to the centralizednode, as illustrated in columns 604 and 606. The centralized node thencombines the results, as illustrated in column 608, and determines thequantile bounds for each bin, as shown in column 610. FIG. 6B alsotracks the minimum and maximum values within each bin, which may, forexample, be used in the creation of a non-uniform grid to narrow thespan of bins generated in further iterations.

From this information, the centralized node can determine that thedesired 75% quantile must be included within Bin 3, which has a lowerquantile bound of 74.07% and an upper bound of 85.5. If the data rangewithin Bin 3 meets the desired level of precision, then a quantileestimate may be determine from the information shown in FIG. 6B. Forexample, the value at the mid-point of Bin 3 (74.07≦x≦86.22) may beselected, resulting in an estimated 75% quantile of 80.15. However, ifgreater precision is desired, then Bin 3 may be further refined into anew set of data bins, as illustrated in FIG. 6C.

In FIG. 6C, the data from the isolated bin (Bin 3) is separated intofour uniform bins (Bins 3.1-3.4), as shown in col. 612. In otherexamples, however, information regarding the likely position of thequantile within the isolated bin could be used to separate the isolatedbin into another non-uniform set of data bins. In a third pass, thedistributed nodes (server 1 and server 2) perform a count of the datavalues in each of the redefined bins and return the results to thecentralized node, as illustrated in columns 614 and 616. The counts arethen combined, as shown in column 618, and the quantile bounds for eachbin are calculated, as shown in column 620. In the illustrated example,the process has converged on the exact 75% quantile of 83.1, located inBin 3.3.

FIGS. 7-8E depict another example in which the data of interest isnon-numerical. In this example, the data of interest is the text of theU.S. Bill of Rights, which is stored at two separate nodes (server 1 andserver 2) in a distributed system, as illustrated in FIG. 7.Specifically, the text from Amendments I-V is stored in a file locatedat a first node (server 1) 702 and the text from Amendments VI-X isstored in a file located at a second node (server 2) 704. This examplefinds the 23% quantile of the words in the Bill of Rights. That is, theexample determines the word that appears in the Bill of Rights thatfollows alphabetically 23% of all words appearing in the Bill of Rights.

It should be understood that there is a technicality involved withcharacter data that isn't involved with numerical data. Depending on thenumber of datum, there may not be a datum for which 23% of the totaldata are less. Consider, for instance, the following example:

Data={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, Desired quantile=23%.

In this data set, 20% of the data is less than or equal to 2, 30% of thedata is less than or equal to 3. In practice, some systems report the23% quantile to be 2, some report 3, some report the average 2.5, othersreport an interpolated value 2.3, and still others report some otherinterpolated number between 2 and 3.

Interpolation of character data typically does not give meaningfulresults. Instead, one or the two words adjacent to the desiredpercentile are reported. The character equivalent to the numericalexample set forth above is:

Data={a, b, c, d, e, f, g, h, i, j}, Desired quantile=23%.

The answer to this example could be either ‘b’ or ‘c’.

To create the data bin boundaries for character data, a scheme may beused to interpolate character data. The bin boundaries will not bemeaningful words under the interpolation scheme. However, the maximumand minimum words (alphabetically) may be stored for each bin.

FIG. 8A illustrates the minimum and maximum words obtained from a firstpass through the data. As shown, the first node (server 1) determinesthat its stored data includes a count of 266 words with a minimum word(alphabetically) of “a” and a maximum word of “witness.” The second node(server 2) in the illustrated example determines that its stored dataincludes a count of 196 words with a minimum word of “a” and a maximumword of “witnesses.” As illustrated, the combined results may then bedetermined (e.g., by a centralized node), resulting in a combined totalof 462 words with a minimum of “a” and a maximum of “witnesses.” With atotal of 462 words in the stored data, the example is looking for wordnumber 462*0.23=106.26, to locate the 23% quantile. The example willtherefore report words 106 and 107.

In one example, to create the bin points for the character data eachword may be mapped to an integer. This may be accomplished, for example,by locating the longest word in the data (in this case “establishment”with 13 letters) and consider each word as a number, in base 26, createdby left-justifying the word with a=0, b=1, c=2, . . . , z=25. Thisreduces the bin creating process to the same problem as the numericalexamples.

To reduce the number of comparisons, a minimum number of alphabeticdigits may be determined in order to arrive at a desired number ofdistinct bins. For instance, to provide 3 bin boundaries between ‘a’ and‘witnesses’, bins are only necessary between ‘a’=0 and ‘w’=22. The 25%bin boundary would therefore be (22−0)*0.25=5.5 (between ‘f’ and ‘g’,which we can round to ‘g’); the 50% bin boundary would be (22−0)*0.5=11(‘l’), and the 75% bin boundary would be (22−0)*0.75=16.5 (between ‘q’and ‘r’, which rounds to ‘r’). These resulting bins are illustrated inFIG. 8B, at column 810.

In a second pass through the data, the distributed nodes (server 1 andserver 2) perform a count of the number of data values in each bin alongwith the minimum and maximum data values, as shown in columns 812 and814 of FIG. 8B. The centralized node then combines the results, asillustrated in column 816, and determines the cumulative sum for eachbin, as shown in column 818. In the illustrated example, the cumulativesum of the first bin is 143, therefore the desired quantile is locatedin Bin 1 between the words ‘a’ and ‘freedom.’ Bin 1 may then be dividedinto a new set of data bins to further isolate the desired quantile, asillustrated in FIG. 8C.

In FIG. 8C, the data from the isolated bin (Bin 1) is separated intofour new bins (Bins 1.1-1.4), as shown at column 820. In a third datapass, the distributed nodes (server 1 and server 2) determine a datacount and minimum/maximum data values in each of the redefined bins, andreturn the results to the centralized node, as illustrated in columns822 and 824. The counts are then combined, as shown in column 826, andthe cumulative sum for each bin is determined, as shown in column 828.In this example, the cumulative sum of the first two bins is 110,therefore the desired quantile is located in Bin 1.2 between the words‘bail’ and cruel.’ To further isolate the quantile, Bin 1.2 may beseparated into four more bins, as shown in FIG. 8D.

In FIG. 8D, the data from the isolated bin (Bin 1.2) is separated intofour new bins (Bins 1.2.1-1.2.4), as shown at column 830. In a fourthdata pass, the distributed nodes (server 1 and server 2) determine adata count and minimum/maximum data values in each of the redefinedbins, and return the results to the centralized node, as illustrated incolumns 832 and 834. The counts are then combined, as shown in column836, and the cumulative sum for each bin is determined, as shown incolumn 838. From this information, it can be seen that the quantile islocated in Bin 1.2.4 between the words ‘committed’ and criminal.’ Tofurther isolate the quantile, Bin 1.2.4 may be separated into four morebins, as shown in FIG. 8E.

In FIG. 8E, the data from the isolated bin (Bin 1.2.4) is separated intofour new bins (Bins 1.2.4.1-1.2.4.4), as shown at column 840. In a fifthdata pass, the distributed nodes (server 1 and server 2) determine adata count and minimum/maximum data values in each of the redefinedbins, and return the results to the centralized node, as illustrated incolumns 842 and 844. The counts are then combined, as shown in column846, and the cumulative sum for each bin is determined, as shown incolumn 848. In the illustrated example, the process has converged on thedesired 23% quantile (i.e., the 106^(th) or 107^(th) wordalphabetically) in Bin 1.2.4.4, which is the word ‘crime’.

FIG. 9 depicts an example of a distributed system 900 that may be usedfor estimating quantiles. The distributed system 900 includes aplurality of nodes 902 that are connected together though one or morenetworks 904 and which may be accessed over the network(s) 904 by one ormore computers or network terminals 906. Each node 902 may include oneor more servers 908 executing data storage and retrieval software on aprocessing system 910. Each node 902 may also include one or more datastores 912 and/or computer readable medium 914. One of the nodes 902may, for example, be a centralized node that executes a quantileestimation engine, as described herein. In addition, the nodes 902 ofthe distributed system 900 may be connected using middleware (not shown)such that the entire distributed system 900 appears to a user as asingle, integrated computing system.

This written description uses examples to disclose the invention,including the best mode, and also to enable a person skilled in the artto make and use the invention. The patentable scope of the invention mayinclude other examples. Additionally, the methods and systems describedherein may be implemented on many different types of processing devicesby program code comprising program instructions that are executable bythe device processing subsystem. The software program instructions mayinclude source code, object code, machine code, or any other stored datathat is operable to cause a processing system to perform the methods andoperations described herein. Other implementations may also be used,however, such as firmware or even appropriately designed hardwareconfigured to carry out the methods and systems described herein.

The systems' and methods' data (e.g., associations, mappings, datainput, data output, intermediate data results, final data results, etc.)may be stored and implemented in one or more different types ofcomputer-implemented data stores, such as different types of storagedevices and programming constructs (e.g., RAM, ROM, Flash memory, flatfiles, databases, programming data structures, programming variables,IF-THEN (or similar type) statement constructs, etc.). It is noted thatdata structures describe formats for use in organizing and storing datain databases, programs, memory, or other computer-readable media for useby a computer program.

The computer components, software modules, functions, data stores anddata structures described herein may be connected directly or indirectlyto each other in order to allow the flow of data needed for theiroperations. It is also noted that a module or processor includes but isnot limited to a unit of code that performs a software operation, andcan be implemented for example as a subroutine unit of code, or as asoftware function unit of code, or as an object (as in anobject-oriented paradigm), or as an applet, or in a computer scriptlanguage, or as another type of computer code. The software componentsand/or functionality may be located on a single computer or distributedacross multiple computers depending upon the situation at hand.

It should be understood that as used in the description herein andthroughout the claims that follow, the meaning of “a,” “an,” and “the”includes plural reference unless the context clearly dictates otherwise.Also, as used in the description herein and throughout the claims thatfollow, the meaning of “in” includes “in” and “on” unless the contextclearly dictates otherwise. Finally, as used in the description hereinand throughout the claims that follow, the meanings of “and” and “or”include both the conjunctive and disjunctive and may be usedinterchangeably unless the context expressly dictates otherwise; thephrase “exclusive or” may be used to indicate situation where only thedisjunctive meaning may apply.

It is claimed:
 1. A computer-implemented method for estimating quantilesfor data stored in a distributed system, comprising: receiving aninstruction to estimate a specified quantile for a variate in a set ofdata stored at a plurality of nodes in the distributed system;identifying a minimum data value and a maximum data value for thevariate from the set of data; defining a plurality of data bins for thevariate, wherein the plurality of data bins collectively range from theminimum data value to the maximum data value and each of the pluralityof data bins is associated with a different range of data values in theset of data; determining a total number of data values in the set ofdata that fall within each of the plurality of data bins; determininglower and upper quantile bounds for each of the plurality of data binsbased at least in part on the total number of data values that fallwithin each of the plurality of data bins; identifying one of theplurality of data bins that includes the specified quantile based on thelower and upper quantile bounds; estimating the specified quantile basedon the identified one of the plurality of data bins; and storing dataincluding the estimated specified quantile and the upper and lowerquantile bounds.